**************Plotting moments fit***************
//Fuyao Wang
//6.14.2021

clear all
set more off, perm
capture log close
set maxvar 32767
global klmChinaReach2: env klmChinaReach2
global datapath "${klmChinaReach2}/Fuyao_Erlfang"
cd "$datapath\moments_dta"




******all task passing rate of gross******

use alltask_rate, clear
merge 1:1 ts_id using "$datapath/Eleanor/Control Groups/controlgroup.dta", nogen keepusing(level* repeat*)


unab skills : level*
local skills : subinstr local skills "level" "", all
foreach skill of local skills {
	sort level`skill' ts_id
	gen index`skill'= sum(!missing(level`skill')) if !missing(level`skill')
}
sort ts_id

keep if levelg != .


**Paste over lines 1-22 simulated moments - var46

replace var46 = . if var46 == -99
drop if var46 == .
label var mean_task "Data"
label var ub "95% CI"
label var var46 "Model"

local xlines ""
local xlabels ""
sum levelg
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexg if levelg==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}


twoway line mean_task indexg, sort lwidth(medthin) || line ub indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var46 indexg, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks by Level", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: The dashed yellow lines indicate the last task at each difficulty level. Within difficulty levels, " "tasks are arranged by order of the children taking them.", size(small) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_alltask", replace)
	graph export "plots/gross/gross_alltask.pdf", replace	
	



******levelg only 9******
use levelg_rate, clear


label var mean_task "Data"
label var ub "95% CI"
**paste over 23-31
label var var7 "Model"
drop if levelg == 1
twoway connected mean_task levelg, sort lwidth(medthin) msize(small) || line ub levelg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb levelg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var7 levelg, sort msize(small)   ///
	xlabel(2(1)9, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks Average Passing Rate at Each Level", size(medium)) legend(order(1 2 4) row(1) size(vsmall) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_levelg", replace)
	graph export "plots/gross/gross_levelg.pdf", replace	
	
	

*************g conditional on previous level*****************

use artg_rate_pre1, clear

**Paste over lines 32-62 simulated moments - var9

gen indexg = _n
replace var9 = . if var9 == -99

label var mean "Data"
label var ub "95% CI"
label var var9 "Model"


local xlines ""
local xlabels ""
sum l_focus
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexg if l_focus==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}

	twoway line mean indexg, sort lwidth(medthin) || line ub indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 indexg, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///	
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks Average Passing Rate", size(medium)) subtitle("Conditional on the Previous Difficulty Level Task Performance", size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("The dashed yellow lines indicate the last task at each difficulty level." "Within difficulty levels, tasks are arranged by order of the children taking them.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/gross/gross_pre1", replace)
	graph export "plots/gross/gross_pre1.pdf", replace	
	
	
*******************************************g conditional on previous task***************************************


use artg_rate_pretask, clear
**Paste over lines 63-74 simulated moments - var9
gen index = _n
replace var9 = . if var9 == -99

label var mean "Data"
label var ub "95% CI"
label var var9 "Model"
local xlines ""
local xlabels ""
sum l_focus
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum index if l_focus==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}


twoway line mean index, sort lwidth(medthin) || line ub index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 index, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///	
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks Average Passing Rate", size(medium)) subtitle(Conditional on Previous Tasks' Performance at the Same Level, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. The figure presents the average passing rate for each task conditional on passing previous tasks at each level. For example, it shows tasks" "2-5's passing rates conditional on passing the first tasks, and tasks 3-5's passing rates conditional on passing task 2, etc., at each difficulty level." "2. The dashed yellow lines indicate the last task at each difficulty level.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_pretask", replace)
	graph export "plots/gross/gross_pretask.pdf", replace	
	
	
*******************************************g conditional on previous 2 level***************************************
	

use artg_rate_pre2, clear

**paste over 75-98 - var9


gen index = _n
replace var9 = . if var9 == -99


label var mean "Data"
label var ub "95% CI"
label var var9 "Model"


local xlines ""
local xlabels ""
sum l_focus
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum index if l_focus==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}

	twoway line mean index, sort lwidth(medthin) || line ub index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var9 index, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks Average Passing Rate", size(medium)) subtitle("Conditional on the Difficulty Level Two Steps Down Task Performance", size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. The dashed yellow lines indicate the last task of each difficulty level.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/gross/gross_pre2", replace)
	graph export "plots/gross/gross_pre2.pdf", replace		

	
	
*******************************************New and old group***************************************

use enroll_1mo, clear

keep if levelg != .
sort ts_id
**Paste over lines 99-120 simulated moments for new enroll - var40
**Paste over lines 121-142 simulated moments for old enroll - var41
rename var40 sim_new
rename var41 sim_old

replace sim_new = . if sim_new == -99
replace sim_old = . if sim_old == -99

keep if N_old>10 & N_new>10

unab skills : level*
local skills : subinstr local skills "level" "", all
foreach skill of local skills {
	sort level`skill' ts_id
	gen index`skill'= sum(!missing(level`skill')) if !missing(level`skill')
}
unab skills : level*
local skills : subinstr local skills "level" "*", all
order `skills', after(max_age)
sort ts_id



label var mean_new "Data"
label var ub_new "95% CI"
label var sim_new "Model"
label var mean_old "Data"
label var ub_old "95% CI"
label var sim_old "Model"

preserve
drop if mean_new == .
local xlines ""
local xlabels ""
sum levelg
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexg if levelg==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}
***delete less than 10 obs
twoway line mean_new indexg, sort lwidth(medthin) || line ub_new indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_new indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter sim_new indexg, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks for Newly Enrolled Group", size(medium)) subtitle(Enrollment Duration Less than One Month, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Enrolled < 1 Month represents children who had been in the program for less than one month when the task was evaluated." "2. Tasks with fewer than 10 observations in either group are omitted.   3. The dashed yellow lines indicate the last task at each difficulty level." "Within difficulty levels, tasks are arranged by order of the children taking them.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/gross/gross_groupnew", replace)
	graph export "plots/gross/gross_groupnew.pdf", replace	
restore


preserve
drop if mean_old == .
local xlines ""
local xlabels ""
sum levelg
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum indexg if levelg==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}
	
twoway line mean_old indexg, sort lwidth(medthin) || line ub_old indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_old indexg, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter sim_old indexg, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks for Already Enrolled Group", size(medium)) subtitle(Enrollment Duration More than one month, size(small)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("1. Enrolled > 1 Month represents children who had been in the program for more than one month when the task was evaluated, who continued" "to stay in the program for 2 years. 2. Tasks with fewer than 10 observations in either group are omitted.  3. The dashed yellow lines indicate" "the last task at each difficulty level. Within difficulty levels, tasks are arranged by order of the children taking them.", size(vsmall) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/gross/gross_groupold", replace)
	graph export "plots/gross/gross_groupold.pdf", replace	

restore	
	
	
*******************************************g first 3 tasks each level***************************************

use artg1-5_rate, clear

**paste 143-160 - var8
label var var8 "Model"
drop if var8 == -99
gen index = _n

label var mean "Data"
label var ub "95% CI"


local xlines ""
local xlabels ""
sum level
if r(N)>0 {
	forval level=`r(min)'/`r(max)' {
		sum index if level==`level'
		if r(N)>0 {
		local xlines "`xlines' `r(max)'"
		local xlabels `" `xlabels' `r(max)' "`level'" "'
		}
	}
}

	twoway line mean index, sort lwidth(medthin) || line ub index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb index, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8 index, sort msize(small)   ///
	xline(`xlines', lcolor(khaki) lpattern(dash) lwidth(thin)) ///
	xlabel(`xlabels', labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Passing Rate, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Tasks by Level", size(medium)) subtitle(First Three Tasks at Each Level, size(small)) legend(order(1 2 4) row(1) size(vsmall) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: The dashed yellow lines indicate the last task at each difficulty level. Within difficulty levels, " "tasks are arranged by order of the children taking them.", size(small) span) ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin))  ///
	saving("plots/gross/gross_first5_alllevel", replace)
	graph export "plots/gross/gross_first5_alllevel.pdf", replace	

	

	
********Duration******
use duration_g, clear
**paste over lines 334-340 var8

label var mean "Data"
label var ub "95% CI"
label var var8 "Model"

drop if level == 1

twoway connected mean level, sort lwidth(medthin) msize(small) || line ub level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8 level, sort msize(small)   ///
	xlabel(2(1)9, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Time to Mastery, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Time to Mastery by Level", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: Time to Mastery is defined as the number of tasks a child takes at the previous difficulty level" "until the first success (inclusive).", size(small) span)   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_dur", replace)
	graph export "plots/gross/gross_dur.pdf", replace	
	
	

********Interaction******
use interaction_g, clear


**paste over lines 348-368 var8

drop if level == 1 | level == 3

reshape wide mean n se lb ub var8, i(level) j(reshape)

foreach i in mean n se lb ub var8{
    rename `i'1 `i'_tab
    rename `i'2 `i'_intab
    rename `i'3 `i'_inttc	
}

foreach i in _tab _intab _inttc{
	label var mean`i' "Data"
	label var ub`i' "95% CI"
	label var var8`i' "Model"
}


twoway connected mean_tab level, sort lwidth(medthin) msize(small) || line ub_tab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_tab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_tab level, sort msize(small)   ///
	xlabel(2 4(1)9, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Correlation between Duration and Teaching Ability", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: No observations from levels 1 and 3.")   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_tab", replace)
	graph export "plots/gross/gross_tab.pdf", replace	
	

twoway connected mean_intab level, sort lwidth(medthin) msize(small) || line ub_intab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_intab level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_intab level, sort msize(small)   ///
	xlabel(2 4(1)9, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Correlation between Duration" "and Interaction Quality between Caregiver and Home Visitor", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: No observations from levels 1 and 3.")   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_intab", replace)
	graph export "plots/gross/gross_intab.pdf", replace	
	
twoway connected mean_inttc level, sort lwidth(medthin) msize(small) || line ub_inttc level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || line lb_inttc level, sort lcolor(gs11) lpattern(dash) lwidth(medthin) || scatter var8_inttc level, sort msize(small)   ///
	xlabel(2 4(1)9, labsize(small)) xmtick(, labsize(small)) ///
	xtitle(Difficulty Level, size(small)) ytitle(Correlation, size(small)) ylabel(,labsize(small)) ///
	title("Fit for Gross Motor Correlation between Duration" "and Interaction Quality between Home Visitor and Child", size(medium)) legend(order(1 2 4) row(1) size(small) nobox fcolor() region(fcolor(white) margin(zero)) bmargin(zero) rowgap(tiny) colgap(tiny) keygap(tiny)) ///
	note("Note: No observations from levels 1 and 3.")   ///
	graphregion(fcolor(white) ifcolor(white) ilwidth(vvvthin)) plotregion(margin(medsmall) lwidth(vvvthin) ilwidth(vvvthin)) ///
	saving("plots/gross/gross_inttc", replace)
	graph export "plots/gross/gross_inttc.pdf", replace	